import request from './request'

/**
 * 用户相关API
 */
export const userApi = {
  // 用户登录
  login(data) {
    return request({
      url: '/user/login',
      method: 'post',
      data
    })
  },
  
  // 系统登录接口 - 使用邮箱和密码登录
  loginByPwd(data) {
    return request({
      url: '/system/login/login_by_pwd',
      method: 'post',
      data
    })
  },  
  // 用户注册
  register(data) {
    return request({
      url: '/system/user/register',
      method: 'post',
      data
    })
  },
  
  // 获取用户信息
  getUserInfo(id) {
    return request({
      url: `/system/user/${id}`,
      method: 'get'
    })
  },
  
  // 更新用户信息
  updateUserInfo(id, data) {
    return request({
      url: `/system/user/${id}`,
      method: 'put',
      data
    })
  },
  
  // 删除用户
  deleteUser(id) {
    return request({
      url: `/system/user/${id}`,
      method: 'delete'
    })
  },
  
  // 获取用户列表
  getUserList(params) {
    return request({
      url: '/system/user/list',
      method: 'get',
      params
    })
  },
  
  // 获取用户分页数据
  getUserPage(params) {
    return request({
      url: '/system/user/page',
      method: 'get',
      params
    })
  },
  
  // 封禁用户
  banUser(userId) {
    return request({
      url: `/system/user/${userId}/ban`,
      method: 'post'
    })
  },
  
  // 解封用户
  unbanUser(userId) {
    return request({
      url: `/system/user/${userId}/unban`,
      method: 'post'
    })
  }
}

/**
 * 论坛相关API
 */
export const forumApi = {
  // 获取帖子列表
  getPostList(params) {
    return request({
      url: '/post/list',
      method: 'get',
      params
    })
  },
  
  // 获取帖子分页数据
  getPostPage(params) {
    return request({
      url: '/forum/post/page',
      method: 'get',
      params
    })
  },
  
  // 获取帖子详情
  getPostDetail(id) {
    return request({
      url: `/post/${id}`,
      method: 'get'
    })
  },
  
  // 创建帖子
  createPost(data) {
    return request({
      url: '/post',
      method: 'post',
      data
    })
  },
  
  // 更新帖子
  updatePost(id, data) {
    return request({
      url: `/post/${id}`,
      method: 'put',
      data
    })
  },
  
  // 删除帖子
  deletePost(id) {
    return request({
      url: '/forum/post/delete',
      method: 'delete',
      params: { id }
    })
  },
  
  // 置顶帖子
  pinPost(id) {
    return request({
      url: `/post/${id}/pin`,
      method: 'post'
    })
  },
  
  // 取消置顶
  unpinPost(id) {
    return request({
      url: `/post/${id}/unpin`,
      method: 'post'
    })
  },
  
  // 设置精华
  setEssence(id) {
    return request({
      url: `/post/${id}/essence`,
      method: 'post'
    })
  },
  
  // 取消精华
  unsetEssence(id) {
    return request({
      url: `/post/${id}/unessence`,
      method: 'post'
    })
  },
  
  // 获取评论列表
  getCommentList(postId, params) {
    return request({
      url: `/post/${postId}/comments`,
      method: 'get',
      params
    })
  },
  
  // 添加评论
  addComment(postId, data) {
    return request({
      url: `/post/${postId}/comment`,
      method: 'post',
      data
    })
  },
  
  // 删除评论
  deleteComment(commentId) {
    return request({
      url: `/comment/${commentId}`,
      method: 'delete'
    })
  }
}

/**
 * 分类相关API
 */
export const categoryApi = {
  // 获取分类列表
  getCategoryList(params) {
    return request({
      url: '/category/list',
      method: 'get',
      params
    })
  },
  
  // 获取分类分页数据
  getCategoryPage(params) {
    return request({
      url: '/category/page',
      method: 'get',
      params
    })
  },
  
  // 获取论坛分类分页数据
  getForumCategoryPage(params) {
    return request({
      url: '/forum/forum_category/page',
      method: 'get',
      params
    })
  },
  
  // 获取分类详情
  getCategoryDetail(id) {
    return request({
      url: `/category/${id}`,
      method: 'get'
    })
  },
  
  // 创建分类
  createCategory(data) {
    return request({
      url: '/forum/forum_category/create',
      method: 'post',
      data
    })
  },
  
  // 更新分类
  updateCategory(id, data) {
    return request({
      url: `/category/${id}`,
      method: 'put',
      data
    })
  },
  
  // 删除分类
  deleteCategory(id) {
    return request({
      url: '/forum/forum_category/delete',
      method: 'delete',
      params: { id }
    })
  },
  
  // 启用分类
  enableCategory(id) {
    return request({
      url: `/category/${id}/enable`,
      method: 'post'
    })
  },
  
  // 禁用分类
  disableCategory(id) {
    return request({
      url: `/category/${id}/disable`,
      method: 'post'
    })
  }
}

/**
 * 管理员相关API
 */
export const adminApi = {
  // 获取统计数据
  getStatistics() {
    return request({
      url: '/admin/statistics',
      method: 'get'
    })
  },
  
  // 获取系统日志
  getSystemLogs(params) {
    return request({
      url: '/admin/logs',
      method: 'get',
      params
    })
  },
  
  // 封禁用户
  banUser(userId, data) {
    return request({
      url: `/admin/user/${userId}/ban`,
      method: 'post',
      data
    })
  },
  
  // 解封用户
  unbanUser(userId) {
    return request({
      url: `/admin/user/${userId}/unban`,
      method: 'post'
    })
  },
  
  // 设置帖子置顶
  setPostTop(postId, data) {
    return request({
      url: `/admin/post/${postId}/top`,
      method: 'post',
      data
    })
  },
  
  // 设置帖子精华
  setPostEssence(postId, data) {
    return request({
      url: `/admin/post/${postId}/essence`,
      method: 'post',
      data
    })
  }
}

/**
 * 角色相关API
 */
export const roleApi = {
  // 获取角色分页数据
  getRolePage(params) {
    return request({
      url: '/system/role/page',
      method: 'get',
      params
    })
  },
  
  // 获取角色详情
  getRoleDetail(id) {
    return request({
      url: `/system/role/${id}`,
      method: 'get'
    })
  },
  
  // 创建角色
  createRole(data) {
    return request({
      url: '/system/role/create',
      method: 'post',
      data
    })
  },
  
  // 更新角色
  updateRole(id, data) {
    return request({
      url: `/system/role/${id}`,
      method: 'put',
      data
    })
  },
  
  // 删除角色
  deleteRole(id) {
    return request({
      url: `/system/role/${id}`,
      method: 'delete'
    })
  },
  
  // 启用角色
  enableRole(id) {
    return request({
      url: `/system/role/${id}/enable`,
      method: 'post'
    })
  },
  
  // 禁用角色
  disableRole(id) {
    return request({
      url: `/system/role/${id}/disable`,
      method: 'post'
    })
  },
  
  // 获取角色权限
  getRolePermissions(id) {
    return request({
      url: `/system/role/${id}/permissions`,
      method: 'get'
    })
  },
  
  // 更新角色权限
  updateRolePermissions(id, data) {
    return request({
      url: `/system/role/${id}/permissions`,
      method: 'put',
      data
    })
  },
  
  // 获取角色菜单
  getRoleMenus(id) {
    return request({
      url: `/system/role/${id}/menus`,
      method: 'get'
    })
  },
  
  // 更新角色菜单
  updateRoleMenus(id, data) {
    return request({
      url: `/system/role/${id}/menus`,
      method: 'put',
      data
    })
  }
}

/**
 * 菜单相关API
 */
export const menuApi = {
  // 获取菜单分页数据
  getMenuPage(params) {
    return request({
      url: '/system/menu/page',
      method: 'get',
      params
    })
  },
  
  // 获取菜单列表（树形结构）
  getMenuList(params) {
    return request({
      url: '/system/menu/list',
      method: 'get',
      params
    })
  },
  
  // 获取菜单详情
  getMenuDetail(id) {
    return request({
      url: `/system/menu/${id}`,
      method: 'get'
    })
  },
  
  // 创建菜单
  createMenu(data) {
    return request({
      url: '/system/menu/create',
      method: 'post',
      data
    })
  },
  
  // 更新菜单
  updateMenu(id, data) {
    return request({
      url: `/system/menu/${id}`,
      method: 'put',
      data
    })
  },
  
  // 删除菜单
  deleteMenu(idList) {
    return request({
      url: '/system/menu/delete',
      method: 'delete',
      params: { idList }
    })
  },
  
  // 启用菜单
  enableMenu(id) {
    return request({
      url: `/system/menu/${id}/enable`,
      method: 'post'
    })
  },
  
  // 禁用菜单
  disableMenu(id) {
    return request({
      url: `/system/menu/${id}/disable`,
      method: 'post'
    })
  },
  
  // 获取菜单权限标识列表
  getMenuPermissions() {
    return request({
      url: '/system/menu/permissions',
      method: 'get'
    })
  },
  
  // 获取菜单下拉树
  getMenuDropdownTree() {
    return request({
      url: '/system/menu/menu_dropdown_tree',
      method: 'get'
    })
  }
}

/**
 * 排行榜相关API
 */
export const rankingApi = {
  // 获取排行榜类型列表
  getRankingTypes(params = {}) {
    return request({
      url: '/rank/forum_category/page',
      method: 'get',
      params
    })
  },
  
  // 获取排行榜类型详情
  getRankingTypeDetail(id) {
    return request({
      url: `/rank/forum_category/${id}`,
      method: 'get'
    })
  },
  
  // 创建排行榜类型
  createRankingType(data) {
    return request({
      url: '/rank/forum_category/create',
      method: 'post',
      data
    })
  },
  
  // 更新排行榜类型
  updateRankingType(id, data) {
    return request({
      url: `/rank/forum_category/update`,
      method: 'put',
      data: { ...data, id }
    })
  },
  
  // 删除排行榜类型
  deleteRankingType(id) {
    return request({
      url: '/rank/forum_category/delete',
      method: 'delete',
      params: { id }
    })
  },
  
  // 获取排行榜列表
  getRankings(params) {
    return request({
      url: '/ranking/list',
      method: 'get',
      params
    })
  },
  
  // 获取排行榜分页数据
  getRankingsPage(params) {
    return request({
      url: '/ranking/page',
      method: 'get',
      params
    })
  },
  
  // 获取排行榜详情
  getRankingDetail(id) {
    return request({
      url: `/ranking/${id}`,
      method: 'get'
    })
  },
  
  // 创建排行榜
  createRanking(data) {
    return request({
      url: '/ranking',
      method: 'post',
      data
    })
  },
  
  // 更新排行榜
  updateRanking(id, data) {
    return request({
      url: `/ranking/${id}`,
      method: 'put',
      data
    })
  },
  
  // 删除排行榜
  deleteRanking(id) {
    return request({
      url: `/ranking/${id}`,
      method: 'delete'
    })
  },
  
  // 激活排行榜
  activateRanking(id) {
    return request({
      url: `/ranking/${id}/activate`,
      method: 'post'
    })
  },
  
  // 停用排行榜
  deactivateRanking(id) {
    return request({
      url: `/ranking/${id}/deactivate`,
      method: 'post'
    })
  },
  
  // 刷新排行榜数据
  refreshRanking(id) {
    return request({
      url: `/ranking/${id}/refresh`,
      method: 'post'
    })
  },
  
  // 获取排行榜项目列表
  getRankingItems(id, params) {
    return request({
      url: `/ranking/${id}/items`,
      method: 'get',
      params
    })
  },
  
  // 更新排行榜项目
  updateRankingItem(rankingId, itemId, data) {
    return request({
      url: `/ranking/${rankingId}/items/${itemId}`,
      method: 'put',
      data
    })
  },
  
  // 删除排行榜项目
  deleteRankingItem(rankingId, itemId) {
    return request({
      url: `/ranking/${rankingId}/items/${itemId}`,
      method: 'delete'
    })
  },
  
  // 获取排行榜内容列表（根据分类ID）
  getRankingPersonPage(params) {
    return request({
      url: '/rank/person/page',
      method: 'get',
      params
    })
  },
  
  // 审核排行榜项目
  reviewRankingItem(id, status) {
    return request({
      url: '/rank/person/review',
      method: 'get',
      params: { 
        id: id,
        status: status
      }
    })
  }
}

/**
 * 标签相关API
 */
export const tagApi = {
  // 获取标签列表
  getTagList(params) {
    return request({
      url: '/forum/tag/list',
      method: 'get',
      params
    })
  },
  
  // 获取标签分页数据
  getTagPage(params) {
    return request({
      url: '/rank/tag/page',
      method: 'get',
      params
    })
  },
  
  // 获取标签详情
  getTagDetail(id) {
    return request({
      url: `/forum/tag/${id}`,
      method: 'get'
    })
  },
  
  // 创建标签
  createTag(data) {
    return request({
      url: '/forum/tag/create',
      method: 'post',
      data
    })
  },
  
  // 更新标签
  updateTag(id, data) {
    return request({
      url: '/forum/tag/update',
      method: 'put',
      data: { ...data, id }
    })
  },
  
  // 删除标签
  deleteTag(id) {
    return request({
      url: '/forum/tag/delete',
      method: 'delete',
      params: { id }
    })
  },
  
  // 启用标签
  enableTag(id) {
    return request({
      url: `/forum/tag/${id}/enable`,
      method: 'post'
    })
  },
  
  // 禁用标签
  disableTag(id) {
    return request({
      url: `/forum/tag/${id}/disable`,
      method: 'post'
    })
  },
  
  // 获取热门标签
  getHotTags(params) {
    return request({
      url: '/forum/tag/hot',
      method: 'get',
      params
    })
  }
}